package com.wxzz.elearing.livetelecast.entity;

import com.wxzz.elearning.common.bean.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel(value = "LiveCallback对象", description = "华为云直播回调类")
public class LiveRecordCallbackEntity extends BaseEntity {

    @ApiModelProperty(value = "项目ID")
    private String projectId;

    @ApiModelProperty(value = "直播推流域名")
    private String publishDomain;

    @ApiModelProperty(value = "消息类型: RECORD_START：表示录制开始;" +
            "RECORD_NEW_FILE_START：表示开始创建新的录制文件;" +
            "RECORD_FILE_COMPLETE：表示录制文件生成完成;" +
            "RECORD_OVER：表示录制结束;" +
            "RECORD_FAILED：表示录制失败")
    private String eventType;

    @ApiModelProperty(value = "应用名")
    private String app;

    @ApiModelProperty(value = "录制的流名")
    private String stream;

    @ApiModelProperty(value = "录制格式，支持HLS、FLV和MP4格式")
    private String recordFormat;

    @ApiModelProperty(value = "录制文件的下载地址。当“event_type”为“RECORD_FILE_COMPLETE”时，携带该字段。")
    private String downloadUrl;

    @ApiModelProperty(value = "媒资ID。当“event_type”为“RECORD_FILE_COMPLETE”时，携带该字段。")
    private String assetId;

    @ApiModelProperty(value = "录制文件播放地址，可以直接播放。且仅“event_type”为“RECORD_FILE_COMPLETE”时，携带该字段。")
    private String playUrl;

    @ApiModelProperty(value = "文件大小。单位：秒。")
    private Integer fileSize;

    @ApiModelProperty(value = "录制文件的时长。单位：秒。")
    private Integer recordDuration;

    @ApiModelProperty(value = "录制文件的开始时间，即接收到第一帧数据的时间，格式为yyyy-mm-ddThh:mm:ssZ。\n" +
            "当“event_type”为“RECORD_FILE_COMPLETE”时，携带该字段。")
    private String startTime;

    @ApiModelProperty(value = "录制文件的结束时间，格式为yyyy-mm-ddThh:mm:ssZ。\n" +
            "当“event_type”为“RECORD_FILE_COMPLETE”时，携带该字段。")
    private String endTime;

    @ApiModelProperty(value = "录制文件分辨率的宽。\n" +
            "当“event_type”为“RECORD_FILE_COMPLETE”时，携带该字段。")
    private Integer width;

    @ApiModelProperty(value = "录制文件分辨率的高。\n" +
            "当“event_type”为“RECORD_FILE_COMPLETE”时，携带该字段。")
    private Integer height;

    @ApiModelProperty(value = "存储录制文件的OBS桶所在区域。\n" +
            "当“event_type”为“RECORD_FILE_COMPLETE”时，携带该字段。")
    private String obsLocation;

    @ApiModelProperty(value = "存储录制文件的OBS桶。\n" +
            "当“event_type”为“RECORD_FILE_COMPLETE”时，携带该字段。")
    private String obsBucket;

    @ApiModelProperty(value = "OBS桶存储录制文件的路径。\n" +
            "当“event_type”为“RECORD_FILE_COMPLETE”时，携带该字段。")
    private String obsObject;

    @ApiModelProperty(value = "录制失败的描述信息。\n" +
            "当“event_type”为“RECORD_FAILED”时，携带该字段。")
    private String errorMessage;

}
